﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using DevExpress.XtraEditors;
using BUS;
using DTO;
namespace GPBenhLanh
{
    public partial class frmBaoCaoThuLao_GPB : DevExpress.XtraEditors.XtraForm
    {
        public frmBaoCaoThuLao_GPB()
        {
            InitializeComponent();
        }

        private void btnBaoCao_Click(object sender, EventArgs e)
        {
            int Loai = Convert.ToInt32(radLoaiBaoCao.EditValue);
            string TuNgay
                    = DateTime.Parse(dateTuNgay.EditValue.ToString()).ToString("yyyy-MM-dd");

            string DenNgay
                    = DateTime.Parse(dateDenNgay.EditValue.ToString()).ToString("yyyy-MM-dd");

            int LoaiDVu = int.Parse(comLoaiDVu.EditValue.ToString());
            dsXacNhan dsSoQLy = new dsXacNhan();
            DataTable SoCa = new DataTable();
            double TongTriGia = 0;
            int TongKQ, TongXN;
            switch (Loai)
            {
                case 1://tong hop ket qua               
                    SoCa = ThongKeBUS.BC_ThuLao_TH(TuNgay, DenNgay, LoaiDVu, Loai);
                    if (SoCa == null)
                        return;
                    SoCa.DefaultView.Sort = "DVuCode ASC";
                    SoCa = SoCa.DefaultView.ToTable();                  
                    
                    if (SoCa != null)
                    {
                        DataRow drAdd;
                        double DonGia = 0;
                        for (int i = 0; i < SoCa.Rows.Count; i++)
                        {
                            drAdd = dsSoQLy.dtBCThuLao_TH.NewRow();
                            drAdd["DVuCode"]    = SoCa.Rows[i]["DVuCode"];
                            drAdd["TenDVu"]     = SoCa.Rows[i]["TenDVu"];
                            drAdd["DonGia"]     = SoCa.Rows[i]["DonGia"];
                            drAdd["SlgNTru"]    = SoCa.Rows[i]["SlgNTru"];
                            drAdd["SlgNgTru"]   = SoCa.Rows[i]["SlgNgTru"];
                            drAdd["SlgCTtrinh"] = SoCa.Rows[i]["SlgCTtrinh"];
                            drAdd["SlgKSK"]     = SoCa.Rows[i]["SlgKSK"];
                            drAdd["SlgMG"]      = SoCa.Rows[i]["SlgMG"];
                            drAdd["SlgTong"]    = SoCa.Rows[i]["SlgTong"];

                            DonGia = Convert.ToInt32(SoCa.Rows[i]["DonGia"]);
                            TongTriGia += DonGia * Convert.ToDouble(SoCa.Rows[i]["SlgTong"]);

                            drAdd["TriGiaNTru"] = Convert.ToInt32(SoCa.Rows[i]["SlgNTru"])  * DonGia;
                            drAdd["TriGiaNgTru"]= Convert.ToInt32(SoCa.Rows[i]["SlgNgTru"]) * DonGia;
                            drAdd["TriGiaCT"]   = Convert.ToInt32(SoCa.Rows[i]["SlgCTtrinh"]) * DonGia;
                            drAdd["TriGiaMG"]   = Convert.ToInt32(SoCa.Rows[i]["SlgMG"])    * DonGia;
                            drAdd["TriGiaKSK"]  = Convert.ToInt32(SoCa.Rows[i]["SlgKSK"])   * DonGia;

                            dsSoQLy.dtBCThuLao_TH.Rows.Add(drAdd);
                        }
                        
                        rptBCThuLao_TH rpt = new rptBCThuLao_TH();
                        DateTime date = DateTime.Parse(dateTuNgay.EditValue.ToString());
                        DateTime date2 = DateTime.Parse(dateDenNgay.EditValue.ToString());
                        if (date == date2)
                        {
                            rpt.txtNgayBaoCao.Text = "Ngày " + date.Day.ToString("00")
                                     + " tháng " + date.Month.ToString("00")
                                     + " năm " + date.Year;
                        }
                        else
                        {
                            rpt.txtNgayBaoCao.Text = "Từ ngày " + date.Day.ToString("00")
                                    + "/" + date.Month.ToString("00")
                                    + "/" + date.Year
                                    + " đến ngày " + date2.Day.ToString("00")
                                    + "/" + date2.Month.ToString("00")
                                    + "/" + date2.Year;
                        }
                        rpt.txtNgayBC.Text = "Ngày " + DateTime.Now.Day.ToString("00")
                                     + " tháng " + DateTime.Now.Month.ToString("00")
                                     + " năm " + DateTime.Now.Year;

                        rpt.txtTongGiaTri.Text = TongTriGia.ToString();
                        if (Loai == 1)
                        {
                            rpt.txtTitle.Text = "THỐNG KÊ KẾT QUẢ THỰC HIỆN GIẢI PHẪU BỆNH";
                        }
                        else
                        {
                            rpt.txtTitle.Text = "THỐNG XÁC NHẬN GIẢI PHẪU BỆNH";
                        }
                        if (UserDTO.MaDonVi == "B4")
                        {
                            rpt.txtNguoiKy.Text = "Người lập phiếu";
                        }
                        else
                        {
                            rpt.txtNguoiKy.Text = "Trưởng khoa giải phẫu bệnh";
                        }

                        rpt.lblGioIn.Text = "Giờ In: " + DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss");
                        rpt.DataSource = dsSoQLy;
                        rpt.ShowPreview();
                    }
                    break;
                case 2://Báo cáo tổng hợp Liqui-prep
                    SoCa = ThongKeBUS.BC_ThuLao_Liqui_TH(TuNgay, DenNgay);
                    if (SoCa == null)
                        return;
                    SoCa.DefaultView.Sort = "DVuCode ASC";
                    SoCa = SoCa.DefaultView.ToTable();
                                        
                    if (SoCa != null)
                    {
                        DataRow drAdd;
                        double DonGia = 0;
                        for (int i = 0; i < SoCa.Rows.Count; i++)
                        {
                            drAdd = dsSoQLy.dtBCThuLao_TH.NewRow();
                            drAdd["DVuCode"] = SoCa.Rows[i]["DVuCode"];
                            drAdd["TenDVu"] = SoCa.Rows[i]["TenDVu"];
                            drAdd["DonGia"] = SoCa.Rows[i]["DonGia"];
                            drAdd["SlgNTru"] = SoCa.Rows[i]["SlgNTru"];
                            drAdd["SlgNgTru"] = SoCa.Rows[i]["SlgNgTru"];
                            drAdd["SlgCTtrinh"] = SoCa.Rows[i]["SlgCTtrinh"];
                            drAdd["SlgKSK"] = SoCa.Rows[i]["SlgKSK"];
                            drAdd["SlgMG"] = SoCa.Rows[i]["SlgMG"];
                            drAdd["SlgTong"] = SoCa.Rows[i]["SlgTong"];

                            DonGia = Convert.ToInt32(SoCa.Rows[i]["DonGia"]);
                            TongTriGia += DonGia * Convert.ToDouble(SoCa.Rows[i]["SlgTong"]);

                            drAdd["TriGiaNTru"] = Convert.ToInt32(SoCa.Rows[i]["SlgNTru"]) * DonGia;
                            drAdd["TriGiaNgTru"] = Convert.ToInt32(SoCa.Rows[i]["SlgNgTru"]) * DonGia;
                            drAdd["TriGiaCT"] = Convert.ToInt32(SoCa.Rows[i]["SlgCTtrinh"]) * DonGia;
                            drAdd["TriGiaMG"] = Convert.ToInt32(SoCa.Rows[i]["SlgMG"]) * DonGia;
                            drAdd["TriGiaKSK"] = Convert.ToInt32(SoCa.Rows[i]["SlgKSK"]) * DonGia;

                            dsSoQLy.dtBCThuLao_TH.Rows.Add(drAdd);
                        }

                        rptBCThuLao_TH rpt = new rptBCThuLao_TH();
                        DateTime date = DateTime.Parse(dateTuNgay.EditValue.ToString());
                        DateTime date2 = DateTime.Parse(dateDenNgay.EditValue.ToString());
                        if (date == date2)
                        {
                            rpt.txtNgayBaoCao.Text = "Ngày " + date.Day.ToString("00")
                                     + " tháng " + date.Month.ToString("00")
                                     + " năm " + date.Year;
                        }
                        else
                        {
                            rpt.txtNgayBaoCao.Text = "Từ ngày " + date.Day.ToString("00")
                                    + "/" + date.Month.ToString("00")
                                    + "/" + date.Year
                                    + " đến ngày " + date2.Day.ToString("00")
                                    + "/" + date2.Month.ToString("00")
                                    + "/" + date2.Year;
                        }
                        rpt.txtNgayBC.Text = "Ngày " + DateTime.Now.Day.ToString("00")
                                     + " tháng " + DateTime.Now.Month.ToString("00")
                                     + " năm " + DateTime.Now.Year;

                        rpt.txtTongGiaTri.Text = TongTriGia.ToString();
                        if (UserDTO.MaDonVi == "B4")
                        {
                            rpt.txtNguoiKy.Text = "Người lập phiếu";
                        }
                        else
                        {
                            rpt.txtNguoiKy.Text = "Trưởng khoa giải phẫu bệnh";
                        }
                        rpt.lblGioIn.Text = "Giờ In: " + DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss");
                        rpt.DataSource = dsSoQLy;
                        rpt.ShowPreview();
                    }
                    break;
                case 3://Báo cáo chi tiết Liqui-prep
                    SoCa = ThongKeBUS.BC_ThuLao_Liqui_CT(TuNgay, DenNgay);
                   
                    if (SoCa != null)
                    {
                        DataRow drAdd;
                        int DonGia = 0;
                        for (int i = 0; i < SoCa.Rows.Count; i++)
                        {
                            drAdd = dsSoQLy.dtBCThuLao_CT.NewRow();
                            drAdd["SoHS"] = SoCa.Rows[i]["SoHS"];
                            drAdd["SoBN"] = SoCa.Rows[i]["SoBN"];
                            drAdd["SoTieuBan"] = SoCa.Rows[i]["SoTieuBan"];
                            drAdd["HoTen"] = SoCa.Rows[i]["HoTen"];
                            drAdd["NamSinh"] = SoCa.Rows[i]["NamSinh"];
                            drAdd["NgayNop"] = SoCa.Rows[i]["NgayNop"];
                            drAdd["LoaiBN"] = SoCa.Rows[i]["LoaiBN"];

                            drAdd["NgayNhan"] = SoCa.Rows[i]["NgayNhan"];
                            drAdd["NgayKQ"] = SoCa.Rows[i]["NgayKQ"];

                            if (SoCa.Rows[i]["LoaiBN"].ToString() == "1")
                            {
                                drAdd["TenLoaiBN"] = "Ngoại trú";
                            }
                            else if (SoCa.Rows[i]["LoaiBN"].ToString() == "2")
                            {
                                drAdd["TenLoaiBN"] = "Nội trú";
                            }
                            else if (SoCa.Rows[i]["LoaiBN"].ToString() == "4")
                            {
                                drAdd["TenLoaiBN"] = "Chương trình";
                            }
                            else if (SoCa.Rows[i]["LoaiBN"].ToString() == "5")
                            {
                                drAdd["TenLoaiBN"] = "Khám sức khoẻ";
                            }
                            else
                            {
                                drAdd["TenLoaiBN"] = "Miễn giảm";
                            }
                            drAdd["TenDVu"] = SoCa.Rows[i]["TenDVu"];
                            drAdd["DonGia"] = SoCa.Rows[i]["DonGia"];
                            drAdd["Slg"] = SoCa.Rows[i]["Slg"];
                            drAdd["DVuCode"] = SoCa.Rows[i]["DVuCode"];
                            int ou = 1;
                            if (int.TryParse(drAdd["Slg"].ToString(), out ou))
                            {
                                drAdd["ThanhTien"] = Convert.ToInt32(drAdd["Slg"])
                                                    * Convert.ToInt32(drAdd["DonGia"]);
                            }
                            else
                            {
                                drAdd["ThanhTien"] = drAdd["DonGia"];
                            }

                            if (SoCa.Rows[i]["NgayKQ"].ToString() == "")
                            {
                                drAdd["SlgXN"] = SoCa.Rows[i]["Slg"];
                            }
                            else
                            {
                                drAdd["SlgXN"] = SoCa.Rows[i]["Slg"];
                                drAdd["SlgKQ"] = SoCa.Rows[i]["Slg"];
                            }
                            dsSoQLy.dtBCThuLao_CT.Rows.Add(drAdd);
                        }

                        rptBCThuLao_KQ_CT rpt = new rptBCThuLao_KQ_CT();
                        DateTime date = DateTime.Parse(dateTuNgay.EditValue.ToString());
                        DateTime date2 = DateTime.Parse(dateDenNgay.EditValue.ToString());
                        if (date == date2)
                        {
                            rpt.txtNgayBaoCao.Text = "Ngày " + date.Day.ToString("00")
                                     + " tháng " + date.Month.ToString("00")
                                     + " năm " + date.Year;
                        }
                        else
                        {
                            rpt.txtNgayBaoCao.Text = "Từ ngày " + date.Day.ToString("00")
                                    + "/" + date.Month.ToString("00")
                                    + "/" + date.Year
                                    + " đến ngày " + date2.Day.ToString("00")
                                    + "/" + date2.Month.ToString("00")
                                    + "/" + date2.Year;
                        }
                        if (UserDTO.MaDonVi == "B4")
                        {
                            rpt.txtNguoiKy.Text = "Người lập phiếu";
                        }
                        else
                        {
                            rpt.txtNguoiKy.Text = "Trưởng khoa giải phẫu bệnh";
                        }
                        rpt.lblGioIn.Text = "Giờ In: " + DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss");
                        rpt.DataSource = dsSoQLy;
                        rpt.ShowPreview();
                    }
                    break;
                case 4://chi tiet theo kq      
                    SoCa = ThongKeBUS.BC_ThuLao_KQ_CT(TuNgay, DenNgay, LoaiDVu, Loai);
                    
                    if (SoCa != null)
                    {
                        DataRow drAdd;
                        int DonGia = 0;
                        for (int i = 0; i < SoCa.Rows.Count; i++)
                        {
                            drAdd = dsSoQLy.dtBCThuLao_CT.NewRow();
                            drAdd["SoHS"] = SoCa.Rows[i]["SoHS"];
                            drAdd["SoBN"] = SoCa.Rows[i]["SoBN"];
                            drAdd["SoTieuBan"] = SoCa.Rows[i]["SoTieuBan"];
                            drAdd["HoTen"] = SoCa.Rows[i]["HoTen"];
                            drAdd["NamSinh"] = SoCa.Rows[i]["NamSinh"];
                            drAdd["NgayNop"] = SoCa.Rows[i]["NgayNop"];
                            drAdd["LoaiBN"] = SoCa.Rows[i]["LoaiBN"];

                            drAdd["NgayNhan"] = SoCa.Rows[i]["NgayNhan"];
                            drAdd["NgayKQ"] = SoCa.Rows[i]["NgayKQ"];

                            if (SoCa.Rows[i]["LoaiBN"].ToString() == "1")
                            {
                                drAdd["TenLoaiBN"] = "Ngoại trú";
                            }
                            else if (SoCa.Rows[i]["LoaiBN"].ToString() == "2")
                            {
                                drAdd["TenLoaiBN"] = "Nội trú";
                            }
                            else if (SoCa.Rows[i]["LoaiBN"].ToString() == "4")
                            {
                                drAdd["TenLoaiBN"] = "Chương trình";
                            }
                            else if (SoCa.Rows[i]["LoaiBN"].ToString() == "5")
                            {
                                drAdd["TenLoaiBN"] = "Khám sức khoẻ";
                            }
                            else
                            {
                                drAdd["TenLoaiBN"] = "Miễn giảm";
                            }
                            drAdd["TenDVu"] = SoCa.Rows[i]["TenDVu"];
                            drAdd["DonGia"] = SoCa.Rows[i]["DonGia"];
                            drAdd["Slg"] = SoCa.Rows[i]["Slg"];
                            drAdd["DVuCode"] = SoCa.Rows[i]["DVuCode"];
                            int ou = 1;
                            if (int.TryParse(drAdd["Slg"].ToString(), out ou))
                            {
                                drAdd["ThanhTien"] = Convert.ToInt32(drAdd["Slg"])
                                                    * Convert.ToInt32(drAdd["DonGia"]);
                            }
                            else
                            {
                                drAdd["ThanhTien"] = drAdd["DonGia"];
                            }

                            if (SoCa.Rows[i]["NgayKQ"].ToString() == "")
                            {
                                drAdd["SlgXN"] = SoCa.Rows[i]["Slg"];
                            }
                            else
                            {
                                drAdd["SlgXN"] = SoCa.Rows[i]["Slg"];
                                drAdd["SlgKQ"] = SoCa.Rows[i]["Slg"];
                            }
                            dsSoQLy.dtBCThuLao_CT.Rows.Add(drAdd);
                        }

                        rptBCThuLao_KQ_CT rpt = new rptBCThuLao_KQ_CT();
                        DateTime date = DateTime.Parse(dateTuNgay.EditValue.ToString());
                        DateTime date2 = DateTime.Parse(dateDenNgay.EditValue.ToString());
                        if (date == date2)
                        {
                            rpt.txtNgayBaoCao.Text = "Ngày " + date.Day.ToString("00")
                                     + " tháng " + date.Month.ToString("00")
                                     + " năm " + date.Year;
                        }
                        else
                        {
                            rpt.txtNgayBaoCao.Text = "Từ ngày " + date.Day.ToString("00")
                                    + "/" + date.Month.ToString("00")
                                    + "/" + date.Year
                                    + " đến ngày " + date2.Day.ToString("00")
                                    + "/" + date2.Month.ToString("00")
                                    + "/" + date2.Year;
                        }
                        if (UserDTO.MaDonVi == "B4")
                        {
                            rpt.txtNguoiKy.Text = "Người lập phiếu";
                        }
                        else
                        {
                            rpt.txtNguoiKy.Text = "Trưởng khoa giải phẫu bệnh";
                        }
                        rpt.lblGioIn.Text = "Giờ In: " + DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss");
                        rpt.DataSource = dsSoQLy;
                        rpt.ShowPreview();
                    }
                    break;
            }
        }

        private void btnThoat_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void frmBaoCaoThuLao_GPB_Load(object sender, EventArgs e)
        {
            dateTuNgay.DateTime = DateTime.Now.Date;
            dateDenNgay.DateTime = DateTime.Now.Date;
            radLoaiBaoCao.EditValue = 1;

            DataTable dtLoaiDVu = new DataTable();
            dtLoaiDVu.Columns.Add("IDLoai", typeof(int));
            dtLoaiDVu.Columns.Add("TenLoai", typeof(string));

            DataRow dr = dtLoaiDVu.NewRow();
             dr["IDLoai"] = hensu.FS;
             dr["TenLoai"] = "Cắt lạnh";
             dtLoaiDVu.Rows.Add(dr);

             dr = dtLoaiDVu.NewRow();
             dr["IDLoai"] = hensu.GPB;
             dr["TenLoai"] = "Giải phẫu bệnh";
             dtLoaiDVu.Rows.Add(dr);

             dr = dtLoaiDVu.NewRow();
             dr["IDLoai"] = hensu.PAP;
             dr["TenLoai"] = "PAP";
             dtLoaiDVu.Rows.Add(dr);

             dr = dtLoaiDVu.NewRow();
             dr["IDLoai"] = hensu.FNA;
             dr["TenLoai"] = "FNA";
             dtLoaiDVu.Rows.Add(dr);

             dr = dtLoaiDVu.NewRow();
             dr["IDLoai"] = 9;
             dr["TenLoai"] = "Tất cả";
             dtLoaiDVu.Rows.Add(dr);

            comLoaiDVu.Properties.DataSource = dtLoaiDVu;

            comLoaiDVu.EditValue = 9;
        }

        private void radLoaiBaoCao_EditValueChanged(object sender, EventArgs e)
        {
            
        }
    }
}